lst-groupby-agg 与 lst-groupby-verify,按行业聚合并用 transform 标准化。Split-Apply-Combine(分组-应用-合并)是数据分析中最重要的操作模式:
df、grouped、result 的业务含义、数据类型或取值范围,并判断哪一个输入最可能改变结果。result 的结果;同时写出方向、数量级或表格/图形结构。# ⚠️ 平台原始代码 - 请原样输入至教学平台(注释除外),平台才会判定答案正确
import pandas as pd # 导入Pandas数据分析库
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', # 创建数据框df
'foo', 'bar'], # A列分组标签的续行数据
'B' : ['one', 'one', 'two', 'three', # "B"的数据序列
'two', 'two'], # B列分组标签的续行数据
'C' : [1, 5, 5, 2, 5, 5], # "C"的数据序列
'D' : [2.0, 5., 8., 1., 2., 9.]}) # "D"的数据序列
grouped = df.groupby('A')[['C', 'D']] # 按指定列分组聚合
result=grouped.transform(lambda x: (x - x.mean()) / x.std()) # 定义匿名函数result
print(result) # 输出分析结果数据运行后核对:核对 df、grouped、result 是否按预测参与运算,实际输出是否与预测一致;若不一致,先检查类型、单位、索引/字段和运算顺序。
拓展练习:把输入表替换为本地中国上市公司数据的同结构子集;指出必须保持的字段、数据类型和质量检查。
df.groupby('A'):按 A 列的值将数据分组[['C', 'D']]:选择 C、D 两列进行后续操作transform():对每组应用函数,返回与原数据形状相同的结果lambda x: (x - x.mean()) / x.std():标准化公式# 本地讲解单元需自带数据;上方平台任务按要求不在课件渲染时执行
import pandas as pd
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar'],
'B': ['one', 'one', 'two', 'three', 'two', 'two'],
'C': [1, 5, 5, 2, 5, 5],
'D': [2.0, 5.0, 8.0, 1.0, 2.0, 9.0],
})
# 选择特定列分组
grouped = df.groupby('A')[['C', 'D']]
# 计算每组的均值
print('均值:')
print(grouped.mean())
# 计算每组的总和
print(f'\n求和:')
print(grouped.sum())均值:
C D
A
bar 4.000000 5.0
foo 3.666667 4.0
求和:
C D
A
bar 12 15.0
foo 11 12.0
agg() 是聚合操作中最灵活的方法transform 返回与原数据相同形状的结果,适合组内标准化等场景。
filter() 基于组的统计特征过滤整个组(不是过滤行)。
apply() 可对每组应用任意复杂的自定义函数。
| 方法 | 功能 | 返回形状 |
|---|---|---|
agg() |
聚合统计(均值、求和等) | 每组一行 |
transform() |
组内转换(标准化等) | 与原数据相同 |
filter() |
按条件过滤整个组 | 原数据子集 |
apply() |
灵活应用任意函数 | 取决于函数 |
lst-groupby-agg 与 lst-groupby-verify,按行业聚合并用 transform 标准化。逐项答案:下方 agg 同时输出样本量与均值,演示多种汇总方式;分组遵循拆分—应用—合并并必须报告分母;拓展应用到长三角行业财报时再用 transform 算组内占比、filter 限制小样本,以总额守恒和组内占比和为1核对。
所用数据与字段:表含 industry、revenue
参考代码或推导(平台保护块之外):
[商业大数据分析与应用]